/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.list;

import base.module.CModule;
import base.value.CValue;
import base.value.userobject.CUserObject;
import java.util.ListIterator;

public class CInsertAfter extends CModule {
	@Override
	public void Init() {
		int[] Array = { 2, 3 };
		AssertParam( Array );
	}

	
	
	@Override
	public void Execute() {
		Do( 0, true );
	}
	
	
	
	public void Do( int DIndex, boolean After ) {
		if( Param.length == 2 ) {
			CUserObject Object0 = Param[ 0 ].ToObject();
			CUserObject Object1 = Param[ 1 ].ToObject();
			if( Object0 == Object1 ) Error( "Нельзя вставить объект перед/после самого себя" );
			Object0.Parent.Children.remove( Object0 );
			for( ListIterator<CUserObject> Iterator = Object1.Parent.Children.listIterator(); Iterator.hasNext() ; ) {
				if( Object1 == Iterator.next() ) {
					Object1.Parent.Children.add( Iterator.nextIndex() + DIndex, Object0 );
					Object0.Parent = Object1.Parent;
					return;
				}
			}
		} else {
			CValue Value = Param[ 0 ].GetValue();
			switch( Value.GetType() ) {
				case Array:
			}
		}
	}
}

